'use strict';

require('dotenv').config();

const environment = {
    // 告警配置
    alert: {
        receiveEmails: process.env.ALERT_EMAILS || '459901162@qq.com', // 可多个邮箱用逗号分隔
        memoryThreshold: 80, // 内存使用率阈值（%），超过触发告警
        loginFailLimit: 5, // 登录失败次数阈值，超过触发告警
        diskThreshold: 85, // 磁盘使用率阈值（%），超过触发告警
    },

    // 服务器相关原始变量
    port: process.env.SERVER_PORT ? parseInt(process.env.SERVER_PORT) : 3000,
    nodeEnv: process.env.NODE_ENV || 'production',

    // MySQL相关原始变量
    mysqlHost: process.env.MYSQL_HOST || 'localhost',
    mysqlPort: process.env.MYSQL_PORT ? parseInt(process.env.MYSQL_PORT) : 3306,
    mysqlUser: process.env.MYSQL_USER || 'root',
    mysqlPassword: process.env.MYSQL_PASSWORD || '',
    mysqlDatabase: process.env.MYSQL_DATABASE,
    mysqlCharset: process.env.MYSQL_CHARSET || 'utf8mb4',
    mysqlPoolMax: process.env.MYSQL_POOL_MAX ? parseInt(process.env.MYSQL_POOL_MAX) : 20,
    mysqlPoolMin: process.env.MYSQL_POOL_MIN ? parseInt(process.env.MYSQL_POOL_MIN) : 2,
    mysqlPoolIdle: process.env.MYSQL_POOL_IDLE ? parseInt(process.env.MYSQL_POOL_IDLE) : 2,
    mysqlPoolAcquire: process.env.MYSQL_POOL_ACQUIRE ? Number(process.env.MYSQL_POOL_ACQUIRE) : 60000,
    mysqlPoolEvict: process.env.MYSQL_POOL_EVICT ? Number(process.env.MYSQL_POOL_EVICT) : 10000,

    // 日志相关原始变量
    logDir: process.env.LOG_DIR || './logs', // 日志存放目录（默认项目根目录/logs）
    logLevel: process.env.LOG_LEVEL || (process.env.NODE_ENV === 'development' ? 'debug' : 'info'), // 日志级别
    logMaxSize: process.env.LOG_MAX_SIZE || '50m', // 单个日志文件最大大小（默认50MB）
    logMaxFiles: process.env.LOG_MAX_FILES || '7d', // 日志保留时间（默认7天，过期自动删）
    logDatePattern: process.env.LOG_DATE_PATTERN || 'YYYY-MM-DD', // 日志文件名日期格式（默认年月日）

    // 邮箱相关原始变量
    email_service: process.env.EMAIL_SERVICE || 'qq',
    email_user: process.env.EMAIL_USER || '',
    email_pass: process.env.EMAIL_PASS || '',
    email_from: process.env.EMAIL_FROM || '',
};

const requiredEnv = ['mysqlDatabase'];
const missingEnv = requiredEnv.filter((key) => !environment[key]);
if (missingEnv.length > 0) {
    console.error(`缺少必填环境变量：${missingEnv.join(', ')}`);
    process.exit(1); // 强制退出，避免无效启动
}
module.exports = environment;
